home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / unattended-upgrades / unattended-upgrade-shutdown < prev   
Text File  |  2009-07-20  |  3KB  |  93 lines

  1. #!/usr/bin/python
  2. # Copyright (c) 2009 Canonical Ltd
  3. #
  4. # AUTHOR:
  5. # Michael Vogt <mvo@ubuntu.com>
  6. #
  7. # unattended-upgrade-shutdown - helper that checks if a 
  8. # unattended-upgrade is in progress and waits until it exists
  9. #
  10. # This file is part of unattended-upgrades 
  11. #
  12. # unattended-upgrades is free software; you can redistribute it and/or
  13. # modify it under the terms of the GNU General Public License as published
  14. # by the Free Software Foundation; either version 2 of the License, or (at
  15. # your option) any later version.
  16. #
  17. # unattended-upgrades is distributed in the hope that it will be useful,
  18. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  20. # General Public License for more details.
  21. #
  22. # You should have received a copy of the GNU General Public License
  23. # along with unattended-upgrades; if not, write to the Free Software
  24. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  25. #
  26.  
  27. import apt_pkg
  28. import time
  29. import sys
  30. import logging
  31. import logging.handlers
  32. import gettext
  33. import subprocess
  34. import os.path
  35.  
  36. from optparse import OptionParser
  37. from gettext import gettext as _
  38.  
  39. def do_usplash(msg):
  40.     if os.path.exists("/sbin/usplash_write"):
  41.         logging.debug("Running usplash_write")
  42.         subprocess.call(["/sbin/usplash_write","TEXT", msg])
  43.         subprocess.call(["/sbin/usplash_write","PULSATE"])
  44.  
  45. if __name__ == "__main__":
  46.     # setup gettext
  47.     localesApp="unattended-upgrades"
  48.     localesDir="/usr/share/locale"
  49.     gettext.bindtextdomain(localesApp, localesDir)
  50.     gettext.textdomain(localesApp)
  51.  
  52.     parser = OptionParser()
  53.     parser.add_option("", "--debug",
  54.                       action="store_true", dest="debug", default=False,
  55.                       help="print debug messages")
  56.     parser.add_option("", "--delay", default=10,
  57.                       help="delay in minutes to wait for unattended-upgrades")
  58.     parser.add_option("", "--lock-file", 
  59.                       default="/var/run/unattended-upgrades.lock",
  60.                       help="lock file location")
  61.     (options, args) = parser.parse_args()
  62.     
  63.     # setup logging
  64.     level = logging.INFO
  65.     if options.debug:
  66.         level = logging.DEBUG
  67.     logging.basicConfig(level=level, format="%(levelname)s - %(message)s")
  68.     logger = logging.getLogger()
  69.     try:
  70.         logger.addHandler(logging.handlers.SysLogHandler(
  71.                 "/dev/log", logging.handlers.SysLogHandler.LOG_DAEMON))
  72.     except Exception, e:
  73.         logging.debug("failed to setup syslog logger: %s" % e)
  74.  
  75.     # run
  76.     start_time = time.time()
  77.     while True: 
  78.         res = apt_pkg.GetLock(options.lock_file)
  79.         logging.debug("GetLock returned %i" % res)
  80.         if res > 0:
  81.             logging.debug("Lock not taken")
  82.             sys.exit(0)
  83.     # wait a some seconds and try again
  84.         msg = _("Unattended-upgrade in progress during shutdown, "
  85.                 "sleeping for 5s")
  86.         logging.warning(msg)
  87.         do_usplash(msg)
  88.     time.sleep(5)
  89.     if (time.time() - start_time) > options.delay*60:
  90.             logging.warning(_("Giving up on lockfile after %s delay") % options.delay)
  91.             sys.exit(1)
  92.     sys.exit(0)
  93.